package com.alibaba.citrus.cr.sales.plan.api.salesplan.adjust;

import com.alibaba.citrus.cr.sales.plan.dto.api.request.PageQueryPlanAdjustDetailRequest;
import com.alibaba.citrus.cr.sales.plan.dto.api.request.SalesPlanAdjustDetailSubTotalRequest;
import com.alibaba.citrus.cr.sales.plan.dto.api.response.SalesPlanAdjustDetailSubTotalResponse;
import com.alibaba.citrus.cr.sales.plan.dto.api.response.SalesPlanSubTotalResponse;
import com.alibaba.citrus.cr.sales.plan.sdo.SalesPlanAdjustDetailSDO;
import com.alibaba.cz.base.tool.page.PageResult;
import com.alibaba.lattice2.epoch.meshflow.model.annotation.MeshFlowService;
import com.alibaba.lattice2.epoch.sdk.model.Result;
import com.epoch.app.bcorder.model.dto.PageQuerySalesPlanAdjustDetailRequest;
import com.epoch.app.bcorder.model.dto.PageQuerySalesPlanAdjustDetailResponse;

import java.math.BigDecimal;
import java.util.List;

/**
 * @author yuhailin
 * @description:
 * @date 2021-10-25 16:14
 */
@MeshFlowService(apps = {"bc_order"}, name = "salesPlanAdjustDetailQueryService")
public interface SalesPlanAdjustDetailQueryService {
    /**
     * 分页查询月度计划调整明细
     *
     * @param pageQueryPlanAdjustDetailRequest
     * @return
     */
    Result<PageResult<List<SalesPlanAdjustDetailSDO>>> pageQuerySalesPlanAdjustDetailList(PageQueryPlanAdjustDetailRequest pageQueryPlanAdjustDetailRequest);

    /**
     * 月度计划调整明细小计
     *
     * @param salesPlanAdjustDetailSubTotalRequest
     * @return
     */
    Result<SalesPlanSubTotalResponse> subTotalSalesPlanAdjustDetail(SalesPlanAdjustDetailSubTotalRequest salesPlanAdjustDetailSubTotalRequest);

    /**
     * 月度计划调整明细完成度占比
     *
     * @param salesPlanAdjustDetailSubTotalRequest
     * @return
     */
    Result<BigDecimal> queryCompletePercent(SalesPlanAdjustDetailSubTotalRequest salesPlanAdjustDetailSubTotalRequest);

    /**
     *
     * @param pageQuerySalesPlanAdjustDetailRequest
     * @return
     */
    PageQuerySalesPlanAdjustDetailResponse getSalesPlanAdjustDetailList(PageQuerySalesPlanAdjustDetailRequest pageQuerySalesPlanAdjustDetailRequest);
}
